package models

import (
	"fmt"
	"github.com/redis/go-redis/v9"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"log"
	"os"
	"path/filepath"
	"time"
)

var DB = Init()
var RDB = IniRDB()
var Logger = InitLogger()

//var RabbitMQConn *amqp.Connection

func Init() *gorm.DB {
	username := "root"      //账号
	password := "00000"     //密码
	host := "47.119.190.22" //数据库地址，可以是Ip或者域名
	port := 3306            //数据库端口
	Dbname := "DangYuan"    //数据库名
	timeout := "10s"        //连接超时，10秒

	// root:root@tcp(127.0.0.1:3306)/gorm?
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local&timeout=%s", username, password, host, port, Dbname, timeout)
	//连接MYSQL, 获得DB类型实例，用于后面的数据库读写操作。
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		Logger: logger.Default.LogMode(logger.Info),
	})
	if err != nil {
		log.Panicln("数据库连接失败")
	}
	return db
}
func IniRDB() *redis.Client {
	return redis.NewClient(&redis.Options{
		Addr: "47.119.190.22:6379",
		DB:   0, // use default DB
	})

}

// 获取以当前日期命名的日志文件路径
func getLogFilePath() string {
	currentDate := time.Now().Format("2006-01-02")
	logDir := "/app/" // 这里替换为你实际想要的系统指定目录路径
	logFileName := currentDate + ".log"
	return filepath.Join(logDir, logFileName)
}

// 初始化日志记录器
func InitLogger() *log.Logger {
	logFilePath := getLogFilePath()

	// 创建日志文件所在目录（如果不存在）
	logDir := filepath.Dir(logFilePath)
	err := os.MkdirAll(logDir, os.ModePerm)
	if err != nil {
		log.Fatalf("创建日志文件目录失败：%v", err)
	}

	// 打开日志文件，以追加模式写入
	logFile, err := os.OpenFile(logFilePath, os.O_CREATE|os.O_APPEND|os.O_WRONLY, os.ModePerm)
	if err != nil {
		log.Fatalf("打开日志文件失败：%v", err)
	}

	return log.New(logFile, "", log.LstdFlags)
}

//func InitRabbitMQ() {
//	var err error
//	RabbitMQConn, err = amqp.Dial("amqp://admin:admin@47.119.190.22:5672/")
//	if err != nil {
//		log.Fatalf("Failed to connect to rabbitMQ: %v", err)
//	}
//}
